<?php

namespace App\Console\Commands;

use App\Console\Commands\Common\CommonCommand;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;

class GetFtpFile extends CommonCommand
{

    protected $signature = 'getftpfile';

    protected $ftp_path = 'D:\\ftpuser1';

    protected function analysisFileContent(Collection $content){
        $fileRecords = [];
        //$content->shift(3);//将前三个移出
        $page = 1;
        $prePage = 14;
        while ($content->forPage($page, $prePage)->isNotEmpty()){
            $info = $content->forPage($page, $prePage)->values()->toArray();
            dd($info);
            $fileRecords[] =  $this->buildRecord($info);
            $page++;
        }
        return $fileRecords;
    }

    protected function buildRecord(array $info) {

        $id_number = $info[0];
        $name = $info[0];//姓名
        $inout_flag = $info[1];//出入井标志位,携卡人在井口区域，标志位设为“0”;携卡人已入井，标志位设为“1”;携卡人出井，标志位设为“2”
        $comein_time = $info[2];//入井时间
        $comeout_time = $info[3];//出井时间
        $area = $info[4];//区域编码
        $comein_area = $info[8];//进入当前区域时刻,当出入井标志位为 0 和 2 时，字段为空。日期时间格式yyyy-MM-dd hh:mm:ss。
        $jizhan_code = $info[6];//基站编码
        $current_jizhan_time = $info[7];//当前基站时间
        $work_way = $info[8];//劳动组织方式，汉字，即人员班组模式，例如三八、四六制等。
        $distance_form_jizhan = $info[9];//距离基站距离
        $work_status = $info[10];//人员工作状态，正常|求救
        $is_leader = $info[11];//是否矿领导,1 为是，0 为否，必填项。
        $is_special = $info[12];//是否特种人员,1 为是，0 为否，必填项。
        $jihe_time = $info[13];//行进轨迹基站, 时间集合
        return compact('name','inout_flag','comein_time','comeout_time','area');
    }

    public function handle() {
        $files = array_filter(File::files($this->ftp_path), function($file) {
            $searchString = 'RYSS';
            if(Str::contains($file->getFilename(), $searchString))
                return true;
            else{
                unlink($file->getPathname());
                return false;
            }
        });
        $records = [];
        foreach ($files as $file) {
            $content = $file->getContents();
            $info = Str::of($content)->explode(';');
            $records = array_merge($records,$this->analysisFileContent($info));
        }
        Log::info('SS', $records);

        return 0;
    }
}
